package com.sinodata.bsm.cicp.finder.vsphere;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.sinodata.bsm.cicp.finder.Finder;
import com.sinodata.bsm.cicp.util.SnmpUtil;
import com.sinodata.bsm.common.utils.MD5Encoder;

public class VM extends Finder {
    private static Logger logger = Logger.getLogger(VM.class);
    // 虚拟机的oid

    private static final String VM_CONFIG_OID = ".1.3.6.1.4.1.6876.2.1.1.3";

    // 虚拟机的名称
    private static final String VM_NAME_OID = ".1.3.6.1.4.1.6876.2.1.1.2";

    @Override
    public List<String[]> find(String ip, Map params) {
        List<String[]> results = new ArrayList<String[]>();
        String[] adapters = null;
        try {
            String values = SnmpUtil.getValueBySnmpTable(ip, VM_NAME_OID + "," + VM_CONFIG_OID, "public");
            String[] rows = values.split("\n");
            /*
             * 每一个String[]表示一个资源数据，String[]数据定义如下： 第一个元素：资源的内部标示 第二个元素：资源名称
             * 第三个元素：资源描述 第四-第N个参数：返回的属性值
             */
            for (int i = 0; i < rows.length; i++) {
                String row = rows[i];
                String[] cols = row.split("#");
                adapters = new String[4];
                String vmid = MD5Encoder.encode(cols[1]);
                adapters[0] = vmid;
                adapters[1] = cols[0];
                adapters[2] = "新发现的虚拟机：" + cols[0];
                adapters[3] = vmid; //虚拟机的唯一标示
                results.add(adapters);

            }

        } catch (Exception e) {
            logger.error("error find Network...", e);
        }
        return results;
    }

}
